As computer technology becomes more advanced, file sharing over computer networks has become an important tool for both business and education. For example, today computer users have the capability to share data, audio and video files (i.e., in a legal fashion) with one another using their own computerized devices. On particular type of network that has gained increasing popularity for file/data sharing is a peer-to-peer network (commonly referred to as a P2P network). In general, a peer-to-peer networking model can be implemented in conjunction with private networks such as a local area network (LAN), a wide area network (WAN), a virtual private network (VPN), or with a public network such as the Internet. In a peer-to-peer networking model, several computerized “nodes” are interconnected. Each node typically has the same capabilities, and can initiate a communication session with another node. A peer-to-peer networking model can be contrasted against the client/server or master/slave model in which the server/master has distinct capabilities that the clients/slaves might not have. However, in some cases, peer-to-peer communications are implemented by providing each node both server and client capabilities. One example of a product that supports a peer-to-peer networking model is Advanced Peer-to-Peer Networking (APPN), which is commercially available from International Business Machines, Corp. of Armonk, N.Y. In more recent usage, peer-to-peer networking has come to describe applications in which users can use the Internet to exchange files with each other directly or through a mediating server.
One particular area in which peer-to-peer file sharing has not been extended is for sharing source code. Specifically, when a software developer is attempting to write new source code for a particular product, it can be extremely helpful to him/her to have access to the code of previously developed products that are related to his/her product. Today, many software developers use an Integrated Development Environment (IDE) as a programming tool kit that integrates different editors, wizards, compilers, debuggers, and other necessary tools. Although such programming tool kits usually provide sophisticated help systems, as well as other resources that can assist in designing and implementing code, modern IDEs do not support one of the most popular methods of writing code, namely, programming by example. Although some tools exist for creating new code with design patterns and search code patterns in an object-oriented database, such tools are based on internal code databases. To this extent, the existing tools fall far short of providing shared access to useful source code patterns that were created by individual programmers, and that are stored at multiple locations over a network.
In view of the foregoing, there exists a need for a method, system and program product for sharing source code over a network. Specifically, a need exists for a system that allows source code to be shared, indexed and retrieved in a peer-to-peer networking environment. Still yet, a need exists for providing access to source code patterns created by multiple developers and stored at multiple locations over a peer-to-peer network. A further need exists for providing efficient classification-based navigation and content dependent searching for code patterns from within a local IDE.